home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS077A.dsk / TYPEWRITER+SOUND ROUTINE.int < prev   
Text File  |  2012-02-16  |  4KB  |  64 lines

  1. 1 GOSUB 30:DELAY=25:SOUND=1
  2. 2 GOSUB 700
  3. 10 END 
  4. 30 REM *  AUTOMATIC LOMEM:       *
  5. 40 REM AUTO-LOMEM: MUST BE BEFORE ANY VARIABLES ARE USED
  6. 50  POKE 74,3072 MOD 256: POKE 75,3072/256: POKE 204, PEEK (74): POKE 205, PEEK (75)
  7. 60 REM 74,75 = LOMEM POINTERS, 204,205 = END OF VARIABLE TABLE. LINE IS SAME AS MANUAL LOMEM:
  8. 70 RETURN 
  9. 300 REM *  WHITE-PRINT ROUTINE    *
  10. 310 REM *  PAGE 2 MEMORY MOVE     *
  11. 320 REM MOVE PAGE 1 TEXT (AND USER) TO PAGE 2
  12. .
  13. 330 SOURCESTART=1024:SOURCEFINISH=2047:DESTINACION=2048:REM PAGE 1 TO PAGE 2 MOVE ADDRESSES
  14. 340  POKE 66,DESTINACION MOD 256: POKE 67,DESTINACION/256
  15. 350  POKE 60,SOURCESTART MOD 256: POKE 61,SOURCESTART/256
  16. 360  POKE 62,SOURCEFINISH MOD 256: POKE 63,SOURCEFINISH/256
  17. 370 CALL -468
  18. 380 REM CALLS (WITH THE EXCEPTION OF "CALL -936") SHOULD ALWAYS BE THE LAST STATEMENT ON A LINE IN INTEGER OR APPLESOFT.
  19. 390  POKE -16299,0:RETURN :REM TURN-ON PAGE 2 TEXT AND RETURN
  20. 400 REM THIS ROUTINE IS  EQUIVALENT TO TYPING IN THE MONITOR:
  21.        *800<400.7FFM                     .
  22. 410 REM AND MAY BE USED FOR MOVING ANY BLOCK OF MEMORY TO ANY POSITION IN MEMORY                        .
  23. 420 REM *** END OF MEMORY MOVE ***   
  24.  
  25. .
  26. 500 REM *  TYPEWRITER PRINT-OUT   *
  27. 510 REM *** MISC. SUBROUTINES ***             .
  28. 520 VTAB 24: POKE 50,63:PRINT "                                        ";: POKE 50,255:RETURN :REM PRINT A SINGLE LINE OF WHITE AT BOTTOM
  29. 530 REM *** INITIALIZE SCREEN ***
  30. 540 IF SS=0 THEN DIM S$(255),WRD$(255):SS=1:REM DIMENSION S(ENTENCE)$ AND W(O)RD$ IF NOT YET DONE (REASON FOR SS SWITCH)
  31. 550 CALL -936:FOR LINE=17 TO 24:GOSUB 310:GOSUB 520: POKE -16300,0:FOR TIME=1 TO 100:REM POKE-16300 RETURNS USER TO PAGE 1
  32. 560 NEXT TIME:NEXT LINE:VTAB 20:TAB 4: POKE -16300,0:RETURN :REM INIT AND SIMULATE PAPER ROLLING INTO TYPEWRITER
  33. 570 PRINT :GOSUB 310:GOSUB 520:VTAB 20:TAB 4: POKE -16300,0:RETURN :REM  SCROLL 1 LINE OF TEXT AND DRAW NEW BOTTOM LINE
  34. 580 S= PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336):RETURN :REM  *TYPEWR. SOUND*
  35. 600 REM  *TYPEWR. MAIN LOOP*
  36. .
  37. 610 FOR CURRENTPOS=1 TO  LEN(S$):REM CURRENTPOS WILL MARK BEGINNING OF EACH SUCCESSIVE WORD IN S(ENTENCE)$
  38. 620 FOR J=CURRENTPOS TO  LEN(S$):IF S$(J,J)#" " THEN NEXT J:REM SET J = TO END OF NEXT WORD
  39. 630 WRD$(1)=S$(CURRENTPOS,J-1):CURRENTPOS=J:REM PICK NEXT WORD FROM S(ENTENCE)$
  40. 640 IF  LEN(WRD$)=0 THEN 670:REM IF 2 SPACES IN ROW, LEN =0 SO SKIP
  41. 650 IF  PEEK (36)+ LEN(WRD$)>37 THEN GOSUB 570:REM  IF TAB + WORD MEANS WORD WON'T FIT THEN SCROLL
  42. 660 FOR K=1 TO  LEN(WRD$): POKE 50,63:PRINT WRD$(K,K);: POKE 50,255:IF SOUND THEN GOSUB 580:FOR TIME=0 TO DELAY/4+ RND (DELAY+1):NEXT TIME:NEXT K
  43. 670  POKE 50,63:PRINT " ";: POKE 50,255:REM  "POKE 50,63" IS NOT LEFT ON SO USER DOEN'T CNRTL C AND END UP IN REVERS TEXT
  44. 680 REM ABOVE WILL PRINT-OUT WORD, LETTER BY LETTER WITH TYPEWRITER TIMING (SET BY VALUE OF "DELAY") AND SOUND (SET BY "SOUND=1)
  45. 690 NEXT CURRENTPOS:RETURN :REM                     .
  46. 700 GOSUB 530:S$="        INSTRUCTIONS":GOSUB 600:GOSUB 570:GOSUB 570
  47. 705 S$="     SEE LINE 1 FOR INITIALIZING REQUIRED VARIABLES. THE GOSUB 30 IS A ROUTINE TO SET":GOSUB 600
  48. 710 S$="SET LOMEM AND I'M NOT SURE IF IT IS REALLY NEEDED.":GOSUB 600
  49. 712 S$=" DELAY=  IS HESITATION ROUTINE FOR PUTTING LETTERS ON THE SCREEN (SEE LINE 660). SOUND=1 CALLS ":GOSUB 600
  50. 714 S$="THE TYPEWRITER SOUND. IF SOUND =0 THEN NO SOUND IS PRODUCED. ":GOSUB 600:GOSUB 570:GOSUB 570
  51. 715 S$="     THE SUBROUTINE AT LINE 530 SCROLLS UP THE PAPER FROM THE BOTTOM OF THE SCREEN ":GOSUB 600
  52. 717 S$="AND IS ONLY USED ONCE AT THE BEGINNING. S$ IS WHAT IS WORKED ON EACH TIME ":GOSUB 600
  53. 720 S$="AND THE SUBROUTINE BEGINNING AT LINE 600 IS WHAT PARSES THE CONTENTS OF S$. ":GOSUB 600
  54. 725 GOSUB 570:GOSUB 570:S$="     THE GOSUB 570 JUMPS TO THE NEXT LINE AND TWO GOSUB 570 ACT LIKE ":GOSUB 600
  55. 726 S$="A PARAGRAPH STEP. ":GOSUB 600:GOSUB 570:GOSUB 570
  56. 730 S$="    THE LINES ABOVE 700 CAN  ALL BE DELETED WHEN YOU UNDERSTAND THIS MUCH ":GOSUB 600
  57. 732 S$="AND REPLACED WITH YOUR OWN WORK. ":GOSUB 600
  58. 734 GOSUB 570:GOSUB 570:S$="     LINE 2 CAN DIRECT YOU ANYWHERE YOU CHOOSE TO PLACE THE S$. ":GOSUB 600
  59. 750 GOSUB 570:GOSUB 570:S$="     BEFORE DELETING THE LINES ABOVE 700 LOOK AT THEM TO SEE ":GOSUB 600
  60. 755 S$="THAT ALL THEY ARE MADE UP OF IS A SERIES OF WORDS PLACED IN S$'S ONE AFTER ANOTHER. ":GOSUB 600
  61. 760 FOR D=1 TO 5:GOSUB 570:NEXT D:FOR D=1 TO 2000:NEXT D:TEXT :CALL -936
  62. 770 REM   THIS ROUTINE WAS EXCERPTED FROM THE INF. NUMBER OF MONKEYS AND SET UP FOR YOUR USE BY      WM.J.KERR SR
  63. 900 END 
  64.